//
// Copyright (c) 2004-2005 BroadVision, Inc. All rights reserved.
//
// This software is copyrighted.  Under the copyright laws, this software
// may not be copied, in whole or in part, without prior written consent
// of BroadVision, Inc. or its assignees.  This software is provided under
// the terms of a license between BroadVision and the recipient, and its
// use is subject to the terms of that license.
//
// This software may be protected by one or more U.S. and International
// patents.  Certain applications of BroadVision One-To-One software are
// covered by U.S. patent 5,710,887.
//
// TRADEMARKS: BroadVision and BroadVision One-To-One are registered
// trademarks of BroadVision, Inc., in the United States and the European
// Community, and are trademarks of BroadVision, Inc., in other
// countries.  The BroadVision logo, is a trademark of BroadVision, Inc.,
// in the United States and other countries. Additionally, IONA and Orbix
// are trademarks of IONA Technologies, Ltd.  RSA, MD5, and RC2 are
// trademarks of RSA Data Security, Inc.
//

package com.broadvision.manage.common.tools.action.inbox;

import java.util.StringTokenizer;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.broadvision.alerts.client.AlertManager;
import com.broadvision.visitor.client.Visitor;
import com.broadvision.manage.tools.action.BaseAction;

/**
 * Delete an alert.
 */
public class AlertDeleteAction extends BaseAction {

  /**
   * Implements the action for deleting an alert.
   * <p> <p>
   * @param mapping <code>ActionMapping</code> object used to select this instance
   * @param form Optional <code>ActionForm</code> bean for this request (if any)
   * @param request <code>HttpServletRequest</code> object to process
   * @param response <code>HttpServletResponse</code> object to process
   * <p> <p>
   * @return <code>ActionForward</code> instance describing where and how
   * control should be forwarded, or null if the response has already been completed
   * <p> <p>
   * @throws Exception if an error occurs
   */
  public ActionForward processExecute(ActionMapping mapping,
                                      ActionForm form,
                                      HttpServletRequest request,
                                      HttpServletResponse response)
                               throws Exception {
    Visitor visitor = getVisitor(request);
    long visitorId = visitor.getId();
    AlertManager alertMgr = new AlertManager();

    String alertName = request.getParameter("alertName");
    String messageId = request.getParameter("messageId");

    if (null == alertName && null == messageId) {
      String[] alertIds = request.getParameterValues("alertIds");
      if (null != alertIds) {
        for (int index = 0; index < alertIds.length; index++) {
          String alertId = alertIds[index];
          alertName = null;
          messageId = null;

          int needle = alertId.indexOf(":");
          if (-1 != needle) {
            messageId = alertId.substring(0, needle);
            alertName = alertId.substring(needle+1);
          }

          if (null != alertName && null != messageId) {
            int msgId = Integer.parseInt(messageId);

            alertMgr.deleteInboxMessages(visitorId, alertName, msgId);
          }
        }
      }
    }
    else {
      int msgId = Integer.parseInt(messageId);

      alertMgr.deleteInboxMessages(visitorId, alertName, msgId);
    }
    return mapping.findForward("success");
  }
}
